package com.demo.java.OD51_100.OD97;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【获取最大软件版本号】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145662358
 */
public class OdMain {
    // 定义一个内部类 VersionModel 来表示版本号
    private static class VersionModel implements Comparable<VersionModel> {
        int mainVerson;    // 主版本号
        int secondVersion; // 次版本号
        int addVersion;    // 补丁版本号
        String milVersion = ""; // 里程碑版本号

        // 实现 Comparable 接口的 compareTo 方法，用来比较两个版本号的大小
        @Override
        public int compareTo(VersionModel o) {
            // 比较主版本号
            if (this.mainVerson != o.mainVerson) {
                return this.mainVerson - o.mainVerson;
            }
            // 如果主版本号相同，比较次版本号
            else if (this.secondVersion != o.secondVersion) {
                return this.secondVersion - o.secondVersion;
            }
            // 如果次版本号相同，比较补丁版本号
            else if (this.addVersion != o.addVersion) {
                return this.addVersion - o.addVersion;
            }
            // 如果补丁版本号也相同，比较里程碑版本号
            else {
                return this.milVersion.compareTo(o.milVersion);
            }
        }
    }

    // 解析版本号字符串，转化为 VersionModel 对象
    private static VersionModel parseVersion(String version) {
        // 根据 "." 分割版本号字符串
        String[] values = version.split("\\.");
        VersionModel v = new VersionModel();
        try {
            // 解析主版本号、次版本号
            v.mainVerson = Integer.parseInt(values[0]);
            v.secondVersion = Integer.parseInt(values[1]);
            // 如果有补丁版本号，则解析补丁版本号
            if (2 < values.length) {
                // 分割补丁版本号和里程碑版本号（如果有）
                String[] str = values[2].split("-");
                v.addVersion = Integer.parseInt(str[0]); // 解析补丁版本号
                if (str.length > 1) {
                    v.milVersion = str[1]; // 如果有里程碑版本号，解析它
                }
            }
            return v;
        } catch (Exception e) {
            // 如果解析过程中发生异常，输出异常信息并返回 null
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        try {
            // 创建一个 Scanner 对象来读取输入
            Scanner s = new Scanner(System.in);
            // 读取第一个版本号
            String version1 = s.nextLine();
            // 读取第二个版本号
            String version2 = s.nextLine();

            // 将版本号字符串解析为 VersionModel 对象
            VersionModel v1 = parseVersion(version1);
            VersionModel v2 = parseVersion(version2);

            // 比较两个版本号
            int compareValue = v1.compareTo(v2);
            String result = "";

            // 如果两个版本号相等，则输出较长的版本号字符串
            if (compareValue == 0) {
                result = version1.length() >= version2.length() ? version1 : version2;
            } else {
                // 如果第一个版本号较大，输出第一个版本号，否则输出第二个版本号
                result = compareValue > 0 ? version1 : version2;
            }

            // 输出最终结果
            System.out.println(result);
        } catch (Exception e) {
            // 如果发生异常，输出异常信息并输出 "input error"
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}